import axios from "axios"
import router from "@/router/index.js"
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import {BASE_URL} from "@/utils/common.js"

const httpRequest = axios.create({
    baseURL: BASE_URL,
    // baseURL:'http://192.168.1.179:8082/zyjsxy-miniapp-api/',
    timeout: 100000,
    headers: { 'ContentType': 'application/json' }
});

// 添加请求拦截器
httpRequest.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
	let jwttoken = localStorage.getItem("jwttoken")
	if(jwttoken){
		config.headers.jwttoken = jwttoken
	}
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
httpRequest.interceptors.response.use(function (response) {
    // 对响应数据做点什么
	let code = response.data.code //状态码
	
	switch (code) {
		case 1003:
			{
				ElementUI.Message.error(response.data.msg)
				router.replace('/')//重定向回登录页
				break;
			}
			
		case 1005:
			{ //被登录状态
				ElementUI.Message.error(response.data.msg)
				router.replace('/')//重定向回登录页
				break;
			}
	
		case 1006:
			{ //刷新token
				localStorage.setItem('jwttoken',response.data.data)
	
				// 重置配置
				let config = response.config
				config.headers.jwttoken = response.data.data
				config.baseURL = '' //url已经带上/api,避免出现/api/api的情况
				return httpRequest.request(config) //重新发起请求
			}
	
	
		default:
			{ //正常
				// console.log(1000)
			}
	
	}
	
	return response
}, function (error) {
    // 对响应错误做点什么
    if(error.message.includes('timeout')){   // 判断请求异常信息中是否含有超时timeout字符串
        ElementUI.Message.error('请求超时，请重新刷新页面')
        return Promise.reject(error);          // reject这个错误信息
      }
      ElementUI.Message.error('网络异常，请重新刷新页面')
    return Promise.reject(error);
});

export default httpRequest